ความสามารถในการคำนวณ (CC) ทำหน้าที่เป็นสะพานเชื่อมเวอร์ชันระหว่าง สถาปัตยกรรมเสมือน (PTX) กับ สถาปัตยกรรมจริง (SASS/ไบนารี) นักพัฒนาใช้ nvcc เพื่อเป้าหมายแพลตฟอร์มเฉพาะ ตั้งแต่แพลตฟอร์มเดสก์ท็อป/เซิร์ฟเวอร์ ไปจนถึงแพลตฟอร์มฝังตัว ภายใต้โมเดลระบบปฏิบัติการ เช่น Linux 64 บิต (LP64) หรือ Windows 64 บิต (LLP64).
1. สถาปัตยกรรมเสมือนกับสถาปัตยกรรมจริง
เครื่องมือพัฒนา CUDA รองรับสถาปัตยกรรม GPU จากสองเวอร์ชันหลักล่าสุด ซึ่งอ้างอิงใน ตารางที่ 29: การสนับสนุนคุณสมบัติข้ามความสามารถในการคำนวณ (7.5 ถึง 12.x). เราจะกำหนดการจับคู่โดยใช้แฟล็ก เช่น: nvcc --generate-code arch=compute_80,code=sm_90 prog.cu. สำหรับเป้าหมายที่เน้นอนาคต ใช้แฟล็ก เช่น nvcc -arch=sm_100 หรือแบบเฉพาะเจาะจง เช่น nvcc -arch=sm_100a ถูกใช้งาน
2. ลำดับชั้นของเมโคร
คอมไพเลอร์ใช้ __CUDA_ARCH__ เพื่อแยกทางโค้ด เมโคร __CUDA_ARCH__ จะถูกกำหนดเฉพาะในโค้ดอุปกรณ์ (เช่น __device__, __global__) ควบคุมได้ละเอียดมากขึ้น โดยใช้ __CUDA_ARCH_SPECIFIC__ และ __CUDA_ARCH_FAMILY_SPECIFIC__. คุณสมบัติบางอย่าง เช่น หน่วยความจำแบบแชร์แบบกระจาย หรือเฉพาะ ข้อมูลที่ไม่ใช่จำนวนจริง (NaN)ต้องการ ความสามารถในการคำนวณ 9.0+ หรือ ความสามารถในการคำนวณ 10.0 และใหม่กว่านั้น.
3. ข้อจำกัดด้านค่าตัวเลขและความจุ
ความแม่นยำแตกต่างกันตามระดับความสามารถในการคำนวณ; ตัวอย่างเช่น การจัดการค่าเล็กมาก (subnormal) รับประกันว่า $2^{-16382} \approx 3.36 \cdot 10^{-4932}$ ข้อจำกัดด้านฮาร์ดแวร์ เช่น CUDA_DEVICE_MAX_COPY_CONNECTIONS=16 หรือ คำสั่ง .maxnreg PTX จะถูกบังคับใช้อย่างเข้มงวดตามเวอร์ชันความสามารถในการคำนวณเป้าหมาย